{\rtf1\ansi\ansicpg1252\cocoartf2822 \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;} {\colortbl;\red255\green255\blue255;\red70\green137\blue204;\red23\green24\blue24;\red140\green211\blue254; \red202\green202\blue202;\red109\green109\blue109;\red194\green126\blue101;\red212\green212\blue212;\red113\green192\blue131; \red167\green197\blue152;\red109\green115\blue120;\red183\green111\blue247;\red54\green192\blue160;\red246\green124\blue48; } {\*\expandedcolortbl;;\cssrgb\c33725\c61176\c83922;\cssrgb\c11765\c12157\c12549;\cssrgb\c61176\c86275\c99608; \cssrgb\c83137\c83137\c83137;\cssrgb\c50196\c50196\c50196;\cssrgb\c80784\c56863\c47059;\cssrgb\c86275\c86275\c86275;\cssrgb\c50588\c78824\c58431; \cssrgb\c70980\c80784\c65882;\cssrgb\c50196\c52549\c54510;\cssrgb\c77255\c54118\c97647;\cssrgb\c23922\c78824\c69020;\cssrgb\c98039\c56471\c24314; } \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 \deftab720 \pard\pardeftab720\partightenfactor0 \f0\fs28 \cf2 \cb3 \expnd0\expndtw0\kerning0 \outl0\strokewidth0 \strokec2 \cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf6 \cb3 \strokec6 <\cf2 \strokec2 html\cf5 \strokec5 \cf4 \strokec4 lang\cf6 \strokec6 =\cf7 \strokec7 "en"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cf6 \cb3 \strokec6 <\cf2 \strokec2 head\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf5 \cb3 \cf6 \strokec6 <\cf2 \strokec2 meta\cf5 \strokec5 \cf4 \strokec4 charset\cf6 \strokec6 =\cf7 \strokec7 "UTF-8"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 meta\cf5 \strokec5 \cf4 \strokec4 name\cf6 \strokec6 =\cf7 \strokec7 "viewport"\cf5 \strokec5 \cf4 \strokec4 content\cf6 \strokec6 =\cf7 \strokec7 "width=device-width, initial-scale=1.0"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 title\cf6 \strokec6 >\cf5 \strokec5 Lexo.al - Lajmet e fundit nga Shqip\'ebria, Kosova dhe Maqedonia\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 script\cf5 \strokec5 \cf4 \strokec4 src\cf6 \strokec6 =\cf7 \strokec7 "https://cdn.tailwindcss.com"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 link\cf5 \strokec5 \cf4 \strokec4 href\cf6 \strokec6 =\cf7 \strokec7 "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"\cf5 \strokec5 \cf4 \strokec4 rel\cf6 \strokec6 =\cf7 \strokec7 "stylesheet"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 style\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf2 \strokec2 body\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 font-family:\cf5 \strokec5 \cf9 \strokec9 'Inter'\cf8 \strokec8 ,\cf5 \strokec5 \cf7 \strokec7 sans-serif\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 background:\cf5 \strokec5 \cf7 \strokec7 linear-gradient(\cf10 \strokec10 180deg\cf8 \strokec8 ,\cf5 \strokec5 #f3f4f6 \cf10 \strokec10 0%\cf8 \strokec8 ,\cf5 \strokec5 #e5e7eb \cf10 \strokec10 100%\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf2 \strokec2 #news-grid\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 perspective:\cf5 \strokec5 \cf10 \strokec10 1000px\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf2 \strokec2 .news-card\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 transition:\cf5 \strokec5 \cf7 \strokec7 transform\cf5 \strokec5 \cf10 \strokec10 0.4s\cf5 \strokec5 \cf7 \strokec7 cubic-bezier(\cf10 \strokec10 0.25\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.46\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.45\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.94\cf7 \strokec7 )\cf8 \strokec8 ,\cf5 \strokec5 \cb1 \ \cb3 \cf7 \strokec7 box-shadow\cf5 \strokec5 \cf10 \strokec10 0.4s\cf5 \strokec5 \cf7 \strokec7 cubic-bezier(\cf10 \strokec10 0.25\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.46\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.45\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.94\cf7 \strokec7 )\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 \cf7 \strokec7 filter\cf5 \strokec5 \cf10 \strokec10 0.4s\cf8 \strokec8 ,\cf5 \strokec5 \cf7 \strokec7 opacity\cf5 \strokec5 \cf10 \strokec10 0.4s\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 will-change:\cf5 \strokec5 \cf7 \strokec7 transform\cf8 \strokec8 ,\cf5 \strokec5 \cf7 \strokec7 filter\cf8 \strokec8 ,\cf5 \strokec5 \cf7 \strokec7 opacity\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 transform-style:\cf5 \strokec5 \cf7 \strokec7 preserve-3d\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf2 \strokec2 #news-grid.is-hovered\cf5 \strokec5 \cf2 \strokec2 .news-card:not\cf5 \strokec5 (\cf2 \strokec2 .is-hovered\cf5 \strokec5 ) \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 filter:\cf5 \strokec5 \cf7 \strokec7 blur(\cf10 \strokec10 3px\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 transform:\cf5 \strokec5 \cf7 \strokec7 scale(\cf10 \strokec10 0.95\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 opacity:\cf5 \strokec5 \cf10 \strokec10 0.7\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf2 \strokec2 .news-card.is-hovered\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 transform:\cf5 \strokec5 \cf7 \strokec7 translateZ(\cf10 \strokec10 30px\cf7 \strokec7 )\cf5 \strokec5 \cf7 \strokec7 scale(\cf10 \strokec10 1.05\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 box-shadow:\cf5 \strokec5 \cf10 \strokec10 0\cf5 \strokec5 \cf10 \strokec10 25px\cf5 \strokec5 \cf10 \strokec10 50px\cf5 \strokec5 \cf10 \strokec10 -12px\cf5 \strokec5 \cf7 \strokec7 rgba(\cf10 \strokec10 0\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0\cf8 \strokec8 ,\cf5 \strokec5 \cf10 \strokec10 0.25\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf2 \strokec2 .shqip-tag\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 background-color:\cf5 \strokec5 #D22F27\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 color:\cf5 \strokec5 \cf7 \strokec7 white\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 padding:\cf5 \strokec5 \cf10 \strokec10 4px\cf5 \strokec5 \cf10 \strokec10 10px\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 border-radius:\cf5 \strokec5 \cf10 \strokec10 9999px\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 font-size:\cf5 \strokec5 \cf10 \strokec10 0.75rem\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 font-weight:\cf5 \strokec5 \cf10 \strokec10 600\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 display:\cf5 \strokec5 \cf7 \strokec7 inline-flex\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 align-items:\cf5 \strokec5 \cf7 \strokec7 center\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf2 \strokec2 .flash-tag\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 color:\cf5 \strokec5 #D22F27\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 font-weight:\cf5 \strokec5 \cf10 \strokec10 700\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 font-size:\cf5 \strokec5 \cf10 \strokec10 0.75rem\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 text-transform:\cf5 \strokec5 \cf7 \strokec7 uppercase\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf2 \strokec2 .header-title\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 background:\cf5 \strokec5 \cf7 \strokec7 -webkit-linear-gradient(\cf10 \strokec10 45deg\cf8 \strokec8 ,\cf5 \strokec5 #D22F27\cf8 \strokec8 ,\cf5 \strokec5 #333\cf7 \strokec7 )\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 -webkit-background-clip:\cf5 \strokec5 \cf7 \strokec7 text\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 -webkit-text-fill-color:\cf5 \strokec5 \cf7 \strokec7 transparent\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf2 \strokec2 #error-message\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 display:\cf5 \strokec5 \cf7 \strokec7 none\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 background-color:\cf5 \strokec5 #fef2f2\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 color:\cf5 \strokec5 #991b1b\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 border:\cf5 \strokec5 \cf10 \strokec10 1px\cf5 \strokec5 \cf7 \strokec7 solid\cf5 \strokec5 #fecaca\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 padding:\cf5 \strokec5 \cf10 \strokec10 1rem\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 border-radius:\cf5 \strokec5 \cf10 \strokec10 0.5rem\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 margin-bottom:\cf5 \strokec5 \cf10 \strokec10 1rem\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf6 \cb3 \strokec6 \cf5 \cb1 \strokec5 \ \cf6 \cb3 \strokec6 <\cf2 \strokec2 body\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "bg-gray-100 text-gray-800"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \ \pard\pardeftab720\partightenfactor0 \cf5 \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "app"\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "container mx-auto p-4 md:p-6"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 header\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-center mb-10"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 h1\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-5xl md:text-6xl font-bold header-title"\cf6 \strokec6 >\cf5 \strokec5 Lexo.al\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 p\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-gray-600 mt-2"\cf6 \strokec6 >\cf5 \strokec5 Agregatori i lajmeve m\'eb t\'eb fundit nga burimet kryesore n\'eb Shqip\'ebri, Kosov\'eb dhe Maqedoni.\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "mb-8 flex flex-col md:flex-row gap-4"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 input\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 type\cf6 \strokec6 =\cf7 \strokec7 "text"\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "searchInput"\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 onkeyup\cf6 \strokec6 =\cf7 \strokec7 "filterNews()"\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 placeholder\cf6 \strokec6 =\cf7 \strokec7 "K\'ebrko p\'ebr lajme..."\cf5 \cb1 \strokec5 \ \cb3 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "w-full px-5 py-3 bg-white border border-gray-200 rounded-full focus:ring-2 focus:ring-red-500 focus:outline-none transition duration-300 shadow-sm"\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 select\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "categoryFilter"\cf5 \strokec5 \cf4 \strokec4 onchange\cf6 \strokec6 =\cf7 \strokec7 "filterNews()"\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "w-full md:w-1/3 px-5 py-3 bg-white border border-gray-200 rounded-full focus:ring-2 focus:ring-red-500 focus:outline-none transition duration-300 shadow-sm"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 option\cf5 \strokec5 \cf4 \strokec4 value\cf6 \strokec6 =\cf7 \strokec7 "all"\cf6 \strokec6 >\cf5 \strokec5 T\'eb gjitha Kategorit\'eb\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "error-message"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 h3\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "font-bold"\cf6 \strokec6 >\cf5 \strokec5 Problem me Ngarkimin e Lajmeve\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 p\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "error-text"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "loader"\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-center py-10"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 svg\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "animate-spin h-8 w-8 text-red-600 mx-auto"\cf5 \strokec5 \cf4 \strokec4 xmlns\cf6 \strokec6 =\cf7 \strokec7 "http://www.w3.org/2000/svg"\cf5 \strokec5 \cf4 \strokec4 fill\cf6 \strokec6 =\cf7 \strokec7 "none"\cf5 \strokec5 \cf4 \strokec4 viewBox\cf6 \strokec6 =\cf7 \strokec7 "0 0 24 24"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 circle\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "opacity-25"\cf5 \strokec5 \cf4 \strokec4 cx\cf6 \strokec6 =\cf7 \strokec7 "12"\cf5 \strokec5 \cf4 \strokec4 cy\cf6 \strokec6 =\cf7 \strokec7 "12"\cf5 \strokec5 \cf4 \strokec4 r\cf6 \strokec6 =\cf7 \strokec7 "10"\cf5 \strokec5 \cf4 \strokec4 stroke\cf6 \strokec6 =\cf7 \strokec7 "currentColor"\cf5 \strokec5 \cf4 \strokec4 stroke-width\cf6 \strokec6 =\cf7 \strokec7 "4"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 path\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "opacity-75"\cf5 \strokec5 \cf4 \strokec4 fill\cf6 \strokec6 =\cf7 \strokec7 "currentColor"\cf5 \strokec5 \cf4 \strokec4 d\cf6 \strokec6 =\cf7 \strokec7 "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 p\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "mt-2 text-gray-600"\cf6 \strokec6 >\cf5 \strokec5 Duke ngarkuar lajmet m\'eb t\'eb fundit...\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "news-grid"\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf11 \strokec11 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 div\cf5 \strokec5 \cf4 \strokec4 id\cf6 \strokec6 =\cf7 \strokec7 "no-results"\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "hidden text-center py-10"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 h3\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-2xl font-semibold text-gray-700"\cf6 \strokec6 >\cf5 \strokec5 Asnj\'eb Rezultat\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 p\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-gray-500 mt-2"\cf6 \strokec6 >\cf5 \strokec5 Provoni t\'eb ndryshoni filtrat ose termin e k\'ebrkimit.\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 footer\cf5 \strokec5 \cf4 \strokec4 class\cf6 \strokec6 =\cf7 \strokec7 "text-center p-6 mt-10 bg-gray-800 text-white"\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 p\cf6 \strokec6 >\cf5 \strokec5 © 2025 Lexo.al - T\'eb gjitha t\'eb drejtat e rezervuara.\cf6 \strokec6 \cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \ \cb3 \cf6 \strokec6 <\cf2 \strokec2 script\cf6 \strokec6 >\cf5 \cb1 \strokec5 \ \cb3 \cf11 \strokec11 // --- CONFIGURATION FOR LIVE NEWS ---\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 newsSources \cf8 \strokec8 =\cf5 \strokec5 \cf8 \strokec8 [\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "Telegrafi"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://telegrafi.com/rss/'\cf5 \strokec5 \cf8 \strokec8 \},\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "Koha.net"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://www.koha.net/feed/'\cf5 \strokec5 \cf8 \strokec8 \},\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "Top Channel"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://top-channel.tv/feed/'\cf5 \strokec5 \cf8 \strokec8 \},\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "BalkanWeb"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://www.balkanweb.com/feed/'\cf5 \strokec5 \cf8 \strokec8 \},\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "Alsat"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://alsat.mk/feed/'\cf5 \strokec5 \cf8 \strokec8 \},\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \{\cf5 \strokec5 name\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 "Lajmi.net"\cf8 \strokec8 ,\cf5 \strokec5 url\cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'https://lajmi.net/feed/'\cf5 \strokec5 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 ];\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 newsGrid \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'news-grid'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 loader \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'loader'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 categoryFilter \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'categoryFilter'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 noResults \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'no-results'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 errorMessage \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'error-message'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 errorText \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'error-text'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 let\cf5 \strokec5 allNews \cf8 \strokec8 =\cf5 \strokec5 \cf8 \strokec8 [];\cf5 \cb1 \strokec5 \ \ \cb3 \cf11 \strokec11 // --- CORE FUNCTIONS ---\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf12 \strokec12 async\cf5 \strokec5 \cf12 \strokec12 function\cf5 \strokec5 fetchAllNews\cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf11 \strokec11 // Using the rss2json API, which is more stable for this purpose.\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 promises \cf8 \strokec8 =\cf5 \strokec5 newsSources\cf8 \strokec8 .\cf5 \strokec5 map\cf8 \strokec8 (\cf5 \strokec5 source \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 apiUrl \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 `https://api.rss2json.com/v1/api.json?rss_url=\cf8 \strokec8 $\{\cf5 \strokec5 encodeURIComponent\cf8 \strokec8 (\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 url\cf8 \strokec8 )\}\cf9 \strokec9 `\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 fetch\cf8 \strokec8 (\cf5 \strokec5 apiUrl\cf8 \strokec8 )\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 .\cf5 \strokec5 then\cf8 \strokec8 (\cf5 \strokec5 response \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (!\cf5 \strokec5 response\cf8 \strokec8 .\cf5 \strokec5 ok\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 throw\cf5 \strokec5 \cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Error\cf8 \strokec8 (\cf9 \strokec9 `Network response was not ok for \cf8 \strokec8 $\{\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 name\cf8 \strokec8 \}\cf9 \strokec9 `\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 response\cf8 \strokec8 .\cf5 \strokec5 json\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \})\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 .\cf5 \strokec5 then\cf8 \strokec8 (\cf5 \strokec5 data \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf11 \strokec11 // Check if the API call was successful and if there are items.\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 data\cf8 \strokec8 .\cf5 \strokec5 status \cf8 \strokec8 ===\cf5 \strokec5 \cf9 \strokec9 'ok'\cf5 \strokec5 \cf8 \strokec8 &&\cf5 \strokec5 data\cf8 \strokec8 .\cf5 \strokec5 items\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 data\cf8 \strokec8 .\cf5 \strokec5 items\cf8 \strokec8 .\cf5 \strokec5 map\cf8 \strokec8 (\cf5 \strokec5 item \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 (\{\cf5 \cb1 \strokec5 \ \cb3 title\cf8 \strokec8 :\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 title\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 link\cf8 \strokec8 :\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 link\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 source\cf8 \strokec8 :\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 name\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 category\cf8 \strokec8 :\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 categories\cf8 \strokec8 ?.[\cf14 \strokec14 0\cf8 \strokec8 ]\cf5 \strokec5 \cf8 \strokec8 ||\cf5 \strokec5 \cf9 \strokec9 'T\'eb p\'ebrgjithshme'\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 timestamp\cf8 \strokec8 :\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 pubDate\cf8 \strokec8 ,\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}));\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \strokec5 \cf12 \strokec12 else\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf11 \strokec11 // If the API call fails for a source, log it and return an empty array.\cf5 \cb1 \strokec5 \ \cb3 console\cf8 \strokec8 .\cf5 \strokec5 warn\cf8 \strokec8 (\cf9 \strokec9 `Could not fetch news from \cf8 \strokec8 $\{\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 name\cf8 \strokec8 \}\cf9 \strokec9 . Status: \cf8 \strokec8 $\{\cf5 \strokec5 data\cf8 \strokec8 .\cf5 \strokec5 status\cf8 \strokec8 \}\cf9 \strokec9 `\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 \cf8 \strokec8 [];\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \})\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 .\cf12 \strokec12 catch\cf8 \strokec8 (\cf5 \strokec5 error \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 console\cf8 \strokec8 .\cf5 \strokec5 error\cf8 \strokec8 (\cf9 \strokec9 `Error fetching \cf8 \strokec8 $\{\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 name\cf8 \strokec8 \}\cf9 \strokec9 :`\cf8 \strokec8 ,\cf5 \strokec5 error\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 \cf8 \strokec8 [];\cf5 \strokec5 \cf11 \strokec11 // Return empty array on fetch error to not break the page.\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 results \cf8 \strokec8 =\cf5 \strokec5 \cf12 \strokec12 await\cf5 \strokec5 \cf13 \strokec13 Promise\cf8 \strokec8 .\cf5 \strokec5 all\cf8 \strokec8 (\cf5 \strokec5 promises\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 articles \cf8 \strokec8 =\cf5 \strokec5 results\cf8 \strokec8 .\cf5 \strokec5 flat\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 articles\cf8 \strokec8 .\cf5 \strokec5 sort\cf8 \strokec8 ((\cf5 \strokec5 a\cf8 \strokec8 ,\cf5 \strokec5 b\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 =>\cf5 \strokec5 \cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Date\cf8 \strokec8 (\cf5 \strokec5 b\cf8 \strokec8 .\cf5 \strokec5 timestamp\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 -\cf5 \strokec5 \cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Date\cf8 \strokec8 (\cf5 \strokec5 a\cf8 \strokec8 .\cf5 \strokec5 timestamp\cf8 \strokec8 ));\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 timeSince\cf8 \strokec8 (\cf5 \strokec5 date\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf8 \strokec8 (!\cf5 \strokec5 date\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 ''\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 seconds \cf8 \strokec8 =\cf5 \strokec5 \cf13 \strokec13 Math\cf8 \strokec8 .\cf5 \strokec5 floor\cf8 \strokec8 ((\cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Date\cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 -\cf5 \strokec5 \cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Date\cf8 \strokec8 (\cf5 \strokec5 date\cf8 \strokec8 ))\cf5 \strokec5 \cf8 \strokec8 /\cf5 \strokec5 \cf14 \strokec14 1000\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 seconds \cf8 \strokec8 <\cf5 \strokec5 \cf14 \strokec14 3600\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 `Flash`\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 let\cf5 \strokec5 interval \cf8 \strokec8 =\cf5 \strokec5 \cf13 \strokec13 Math\cf8 \strokec8 .\cf5 \strokec5 floor\cf8 \strokec8 (\cf5 \strokec5 seconds \cf8 \strokec8 /\cf5 \strokec5 \cf14 \strokec14 86400\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 <\cf5 \strokec5 \cf14 \strokec14 1\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 `\cf8 \strokec8 $\{\cf13 \strokec13 Math\cf8 \strokec8 .\cf5 \strokec5 floor\cf8 \strokec8 (\cf5 \strokec5 seconds \cf8 \strokec8 /\cf5 \strokec5 \cf14 \strokec14 3600\cf8 \strokec8 )\}\cf9 \strokec9 or\'eb m\'eb par\'eb`\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 ===\cf5 \strokec5 \cf14 \strokec14 1\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 "1 dit\'eb m\'eb par\'eb"\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 <\cf5 \strokec5 \cf14 \strokec14 30\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 `\cf8 \strokec8 $\{\cf5 \strokec5 interval\cf8 \strokec8 \}\cf9 \strokec9 dit\'eb m\'eb par\'eb`\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 interval \cf8 \strokec8 =\cf5 \strokec5 \cf13 \strokec13 Math\cf8 \strokec8 .\cf5 \strokec5 floor\cf8 \strokec8 (\cf5 \strokec5 seconds \cf8 \strokec8 /\cf5 \strokec5 \cf14 \strokec14 2592000\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 ===\cf5 \strokec5 \cf14 \strokec14 1\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 "1 muaj m\'eb par\'eb"\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 <\cf5 \strokec5 \cf14 \strokec14 12\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 `\cf8 \strokec8 $\{\cf5 \strokec5 interval\cf8 \strokec8 \}\cf9 \strokec9 muaj m\'eb par\'eb`\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 interval \cf8 \strokec8 =\cf5 \strokec5 \cf13 \strokec13 Math\cf8 \strokec8 .\cf5 \strokec5 floor\cf8 \strokec8 (\cf5 \strokec5 seconds \cf8 \strokec8 /\cf5 \strokec5 \cf14 \strokec14 31536000\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf8 \strokec8 (\cf5 \strokec5 interval \cf8 \strokec8 ===\cf5 \strokec5 \cf14 \strokec14 1\cf8 \strokec8 )\cf5 \strokec5 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 "1 vit m\'eb par\'eb"\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 \cf9 \strokec9 `\cf8 \strokec8 $\{\cf5 \strokec5 interval\cf8 \strokec8 \}\cf9 \strokec9 vite m\'eb par\'eb`\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 displayNews\cf8 \strokec8 (\cf5 \strokec5 newsItems\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 newsGrid\cf8 \strokec8 .\cf5 \strokec5 innerHTML \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 ''\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 noResults\cf8 \strokec8 .\cf5 \strokec5 style\cf8 \strokec8 .\cf5 \strokec5 display \cf8 \strokec8 =\cf5 \strokec5 newsItems\cf8 \strokec8 .\cf5 \strokec5 length \cf8 \strokec8 ===\cf5 \strokec5 \cf14 \strokec14 0\cf5 \strokec5 \cf8 \strokec8 ?\cf5 \strokec5 \cf9 \strokec9 'block'\cf5 \strokec5 \cf8 \strokec8 :\cf5 \strokec5 \cf9 \strokec9 'none'\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 newsItems\cf8 \strokec8 .\cf5 \strokec5 forEach\cf8 \strokec8 (\cf5 \strokec5 item \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 cardElement \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 createElement\cf8 \strokec8 (\cf9 \strokec9 'div'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 cardElement\cf8 \strokec8 .\cf5 \strokec5 className \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 'news-card bg-white rounded-xl shadow-lg overflow-hidden p-5 flex flex-col justify-between'\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 cardElement\cf8 \strokec8 .\cf5 \strokec5 innerHTML \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 `\cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9 \cf8 \strokec8 $\{\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 source\cf8 \strokec8 \}\cf9 \strokec9 \cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9 \cf8 \strokec8 $\{\cf5 \strokec5 timeSince\cf8 \strokec8 (\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 timestamp\cf8 \strokec8 )\}\cf9 \strokec9 \cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9

\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9 \cf8 \strokec8 $\{\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 title\cf8 \strokec8 \}\cf9 \strokec9 \cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9

\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9 \cf8 \strokec8 $\{\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 category\cf8 \strokec8 \}\cf9 \strokec9 \cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9
\cf5 \cb1 \strokec5 \ \cf9 \cb3 \strokec9 `\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf5 \cb3 newsGrid\cf8 \strokec8 .\cf5 \strokec5 appendChild\cf8 \strokec8 (\cf5 \strokec5 cardElement\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \ \cb3 addHoverEffects\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 addHoverEffects\cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 cards \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 querySelectorAll\cf8 \strokec8 (\cf9 \strokec9 '.news-card'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 cards\cf8 \strokec8 .\cf5 \strokec5 forEach\cf8 \strokec8 (\cf5 \strokec5 card \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 card\cf8 \strokec8 .\cf5 \strokec5 addEventListener\cf8 \strokec8 (\cf9 \strokec9 'mouseenter'\cf8 \strokec8 ,\cf5 \strokec5 \cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 newsGrid\cf8 \strokec8 .\cf5 \strokec5 classList\cf8 \strokec8 .\cf5 \strokec5 add\cf8 \strokec8 (\cf9 \strokec9 'is-hovered'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 card\cf8 \strokec8 .\cf5 \strokec5 classList\cf8 \strokec8 .\cf5 \strokec5 add\cf8 \strokec8 (\cf9 \strokec9 'is-hovered'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \cb3 card\cf8 \strokec8 .\cf5 \strokec5 addEventListener\cf8 \strokec8 (\cf9 \strokec9 'mouseleave'\cf8 \strokec8 ,\cf5 \strokec5 \cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 newsGrid\cf8 \strokec8 .\cf5 \strokec5 classList\cf8 \strokec8 .\cf5 \strokec5 remove\cf8 \strokec8 (\cf9 \strokec9 'is-hovered'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 card\cf8 \strokec8 .\cf5 \strokec5 classList\cf8 \strokec8 .\cf5 \strokec5 remove\cf8 \strokec8 (\cf9 \strokec9 'is-hovered'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 populateCategories\cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 while\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 categoryFilter\cf8 \strokec8 .\cf5 \strokec5 options\cf8 \strokec8 .\cf5 \strokec5 length \cf8 \strokec8 >\cf5 \strokec5 \cf14 \strokec14 1\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 categoryFilter\cf8 \strokec8 .\cf5 \strokec5 remove\cf8 \strokec8 (\cf14 \strokec14 1\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 categories \cf8 \strokec8 =\cf5 \strokec5 \cf8 \strokec8 [...\cf12 \strokec12 new\cf5 \strokec5 \cf13 \strokec13 Set\cf8 \strokec8 (\cf5 \strokec5 allNews\cf8 \strokec8 .\cf5 \strokec5 map\cf8 \strokec8 (\cf5 \strokec5 item \cf8 \strokec8 =>\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 category\cf8 \strokec8 ))];\cf5 \cb1 \strokec5 \ \cb3 categories\cf8 \strokec8 .\cf5 \strokec5 sort\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 categories\cf8 \strokec8 .\cf5 \strokec5 forEach\cf8 \strokec8 (\cf5 \strokec5 category \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 category\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 option \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 createElement\cf8 \strokec8 (\cf9 \strokec9 'option'\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 option\cf8 \strokec8 .\cf5 \strokec5 value \cf8 \strokec8 =\cf5 \strokec5 category\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 option\cf8 \strokec8 .\cf5 \strokec5 textContent \cf8 \strokec8 =\cf5 \strokec5 category\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 categoryFilter\cf8 \strokec8 .\cf5 \strokec5 appendChild\cf8 \strokec8 (\cf5 \strokec5 option\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 filterNews\cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 searchTerm \cf8 \strokec8 =\cf5 \strokec5 document\cf8 \strokec8 .\cf5 \strokec5 getElementById\cf8 \strokec8 (\cf9 \strokec9 'searchInput'\cf8 \strokec8 ).\cf5 \strokec5 value\cf8 \strokec8 .\cf5 \strokec5 toLowerCase\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 selectedCategory \cf8 \strokec8 =\cf5 \strokec5 categoryFilter\cf8 \strokec8 .\cf5 \strokec5 value\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 filteredNews \cf8 \strokec8 =\cf5 \strokec5 allNews\cf8 \strokec8 .\cf5 \strokec5 filter\cf8 \strokec8 (\cf5 \strokec5 item \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 matchesSearch \cf8 \strokec8 =\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 title\cf8 \strokec8 .\cf5 \strokec5 toLowerCase\cf8 \strokec8 ().\cf5 \strokec5 includes\cf8 \strokec8 (\cf5 \strokec5 searchTerm\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 ||\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 source\cf8 \strokec8 .\cf5 \strokec5 toLowerCase\cf8 \strokec8 ().\cf5 \strokec5 includes\cf8 \strokec8 (\cf5 \strokec5 searchTerm\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 const\cf5 \strokec5 matchesCategory \cf8 \strokec8 =\cf5 \strokec5 selectedCategory \cf8 \strokec8 ===\cf5 \strokec5 \cf9 \strokec9 'all'\cf5 \strokec5 \cf8 \strokec8 ||\cf5 \strokec5 item\cf8 \strokec8 .\cf5 \strokec5 category \cf8 \strokec8 ===\cf5 \strokec5 selectedCategory\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf5 \strokec5 matchesSearch \cf8 \strokec8 &&\cf5 \strokec5 matchesCategory\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \});\cf5 \cb1 \strokec5 \ \ \cb3 displayNews\cf8 \strokec8 (\cf5 \strokec5 filteredNews\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cb1 \ \cb3 \cf12 \strokec12 function\cf5 \strokec5 showError\cf8 \strokec8 (\cf5 \strokec5 message\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 loader\cf8 \strokec8 .\cf5 \strokec5 style\cf8 \strokec8 .\cf5 \strokec5 display \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 'none'\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 errorText\cf8 \strokec8 .\cf5 \strokec5 textContent \cf8 \strokec8 =\cf5 \strokec5 message\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 errorMessage\cf8 \strokec8 .\cf5 \strokec5 style\cf8 \strokec8 .\cf5 \strokec5 display \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 'block'\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \ \cb3 window\cf8 \strokec8 .\cf5 \strokec5 onload \cf8 \strokec8 =\cf5 \strokec5 \cf12 \strokec12 async\cf5 \strokec5 \cf8 \strokec8 ()\cf5 \strokec5 \cf8 \strokec8 =>\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 try\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 allNews \cf8 \strokec8 =\cf5 \strokec5 \cf12 \strokec12 await\cf5 \strokec5 fetchAllNews\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 if\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 allNews\cf8 \strokec8 .\cf5 \strokec5 length \cf8 \strokec8 ===\cf5 \strokec5 \cf14 \strokec14 0\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 showError\cf8 \strokec8 (\cf9 \strokec9 "Asnj\'eb lajm nuk mund t\'eb ngarkohej. Kjo mund t\'eb ndodh\'eb n\'ebse burimet e lajmeve jan\'eb t\'eb padisponueshme p\'ebrkoh\'ebsisht. Ju lutem provoni p\'ebrs\'ebri m\'eb von\'eb."\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf12 \strokec12 return\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 populateCategories\cf8 \strokec8 ();\cf5 \cb1 \strokec5 \ \cb3 displayNews\cf8 \strokec8 (\cf5 \strokec5 allNews\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 loader\cf8 \strokec8 .\cf5 \strokec5 style\cf8 \strokec8 .\cf5 \strokec5 display \cf8 \strokec8 =\cf5 \strokec5 \cf9 \strokec9 'none'\cf8 \strokec8 ;\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \strokec5 \cf12 \strokec12 catch\cf5 \strokec5 \cf8 \strokec8 (\cf5 \strokec5 error\cf8 \strokec8 )\cf5 \strokec5 \cf8 \strokec8 \{\cf5 \cb1 \strokec5 \ \cb3 console\cf8 \strokec8 .\cf5 \strokec5 error\cf8 \strokec8 (\cf9 \strokec9 "A critical error occurred:"\cf8 \strokec8 ,\cf5 \strokec5 error\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 showError\cf8 \strokec8 (\cf9 \strokec9 "Nj\'eb problem teknik ndodhi gjat\'eb ngarkimit t\'eb lajmeve."\cf8 \strokec8 );\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \}\cf5 \cb1 \strokec5 \ \cb3 \cf8 \strokec8 \};\cf5 \cb1 \strokec5 \ \cb3 \cf6 \strokec6 \cf5 \cb1 \strokec5 \ \pard\pardeftab720\partightenfactor0 \cf6 \cb3 \strokec6 \cf5 \cb1 \strokec5 \ \cf6 \cb3 \strokec6 \cf5 \cb1 \strokec5 \ \ }